#### Exerccios Reamostragem e Simulao ####

## Exerccio 1.


##  1.1. Baixe o arquivo palmadulto.txt e leia os dados no R em um objeto chamado 
#    eutad, no esquea de conferir se o objeto de dados foi lido corretamente.

eutad <- read.table("palmadulto.txt", header=TRUE)
eutad
str(eutad)

plot(eutad$gx, eutad$gy)


##  1.2. Crie o objeto para guardar as distncias entre cada indivduo:
  
dist=matrix(NA, ncol=102, nrow=102)
dist


## 1.3. Calcule a distncia observada entre cada indivduo e guarde o resultados 
#    em dist:
  
  for(i in 1:101)
  {
    for(j in (i+1):102)
    {
      difx2=(eutad$gx[i]-eutad$gx[j])^2
      dify2=(eutad$gy[i]-eutad$gy[j])^2
      dist[i,j]<-sqrt(difx2 + dify2)
      dist[j,i]<-sqrt(difx2 + dify2)
    }
    
  }

dist


## 1.4. Verifique o objeto dist e calcule o parmetro chamado de distncia mdia 
#   do vizinho mais prximo (MNN):

(nn<-apply(dist, 1, min, na.rm=TRUE))
(mnn<-mean(nn))


## Simulando

 # 1.5. Crie um vetor resultado, com 1000 NA's, para guardar os valores de 
 #  cada simulao.

resultado <- rep(NA, 1000)

 # 1.6. Guarde o valor observado na primeira posio de resultado;

resultado[1] <- mnn

 # 1.7. Crie um ciclo com contador (i) que vai de 2 a 1000;
 # 1.8. Dentro do ciclo:
 # 1.8.1. Crie o objetos xsim, um vetor com valores amostrados aleatoriamente 
 #   de uma distribuio uniforme de 0 a 320 (o tamanho x da parcela). Lembre-se 
 #   de sortear o mesmo quantidade de valores que a populao de palmito observado;
 # 1.8.2. Faa o mesmo que no passo anterior e guarde no objeto ysim;
 # 1.8.3. Como no tpico anterior, crie uma matriz para guardar as distncias 
#    entre cada valor xy simulados;
 # 1.8.3. Crie os ciclos para o calculo das distncias como no tpico anterior;
 # 1.8.4. Guarde o valor da distncia mdia do vizinho mais prximo dos dados simulados na posio i do vetor resultado;
 # 1.8.5. Feche o ciclo.


for(k in 2:1000)
{
 
 xsim = round(runif(102,0,320),1)
 ysim = round(runif(102,0,320),1)
 dist = matrix(NA, ncol=102, nrow=102)
 
  for(i in 1:101)
 {
  for(j in (i+1):102)
  {
    difx2=(xsim[i] - xsim[j])^2
    dify2=(ysim[i] - ysim[j])^2
    dist[i,j] <- sqrt(difx2 + dify2)
    dist[j,i] <- sqrt(difx2 + dify2)
  }
 }
 
 resultado[k] <- mean(apply(dist, 1, min, na.rm=TRUE))    
}
 
resultado

# 1.9. Faa um histograma dos valores simulados e coloque uma linha vermelha 
#  vertical na posio do valor observado;

hist(resultado)
abline(v = resultado[1], col="red")

# 1.10. Calcule a probabilidade do valor MNN observado ser gerado por uma 
#  distribuio espacial aleatria.

unicaudal=sum(resultado<=resultado[1])
unicaudal
p.uni=unicaudal/length(resultado)
p.uni


###### Exerccio 2 - Aula 9 ######### DESAFIO

animais <- read.table("animais.txt", as.is=T, header=T, sep=";" , dec=",")
animais
animais <- na.omit(animais)
animais
str(animais)


## 2.1. # Calcule a inclinao da relao log(brain) ~ log(body);
plot(log(brain)~log(body), data=animais)
anim.m1 <- lm(log(brain)~log(body),data=animais)
anim.m1
abline(anim.m1, col="blue")

coef.ob <- coef(anim.m1)

inclina.ob = coef.ob[2]
inclina.ob

## 2.2. # Crie um vetor para guardar o resultado de simulaes;
resultado <- rep(NA, 1000)
resultado [1]<-inclina.ob

## 2.3. # Desordene o vetor brain e guarde no objeto sim_brain;
## 2.4. # Calcule a inclinao entre o log(sim_brain) ~ log(body) e guarde no vetor resultado;
## 2.5. # Feche o ciclo;

for(i in 2:1000)
{
 sim_brain <- (sample(animais$brain))
 body <- animais$body
 coef.sim = coef(lm(log(sim_brain)~log(body)))
 resultado[i] = coef.sim[2]
}

## 2.6. # Faa o histograma dos valores simulados e compare com o valor observado da inclinao da relao;

hist(resultado)

abline(v = resultado[1], col="red")


## 2.7. # Calcule a probabilidade da inclinao observada ter sido gerada por variveis que so independentes;
bicaudal=sum(result>=result[1]| result<=(result[1]*-1))
bicaudal
length(result)
p.bi=bicaudal/length(result)
p.bi


